/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.seguradora.model;

import br.com.seguradora.model.constant.EstadoCivil;
import br.com.seguradora.util.DateFormatter;
import com.towel.el.annotation.Resolvable;
import java.util.Date;
import java.util.List;

/**
 *
 * @author Diego
 */
public class Associado {

    @Resolvable(colName = "Código")
    private long id;
    private boolean shadow;
    @Resolvable(colName = "Bloqueado")
    private boolean bloqueado;
    @Resolvable(colName = "Nome")
    private String nome;
    @Resolvable(colName = "CPF")
    private String cpf;
    @Resolvable(colName = "RG")
    private String rg;
    private String orgExp;
    @Resolvable(colName = "Data de nasc.", formatter = DateFormatter.class)
    private Date dataNascimento;
    private EstadoCivil estadoCivil = EstadoCivil.SOLTEIRO;
    private Endereco endereco;
    private Date dataCadastro;
    private String observacao;
    private List<Telefone> telefonesList;

    public Associado(long id) {
        this.id = id;
    }

    public Associado() {
    }

    public Associado(long id, String nome) {
        this(id);
        this.nome = nome;
    }

    public boolean isBloqueado() {
        return bloqueado;
    }

    public void setBloqueado(boolean bloqueado) {
        this.bloqueado = bloqueado;
    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public Date getDataCadastro() {
        return dataCadastro;
    }

    public void setDataCadastro(Date dataCadastro) {
        this.dataCadastro = dataCadastro;
    }

    public Date getDataNascimento() {
        return dataNascimento;
    }

    public void setDataNascimento(Date dataNascimento) {
        this.dataNascimento = dataNascimento;
    }

    public EstadoCivil getEstadoCivil() {
        return estadoCivil;
    }

    public void setEstadoCivil(EstadoCivil estadoCivil) {
        this.estadoCivil = estadoCivil;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getObservacao() {
        return observacao;
    }

    public void setObservacao(String observacao) {
        this.observacao = observacao;
    }

    public String getOrgExp() {
        return orgExp;
    }

    public void setOrgExp(String orgExp) {
        this.orgExp = orgExp;
    }

    public String getRg() {
        return rg;
    }

    public void setRg(String rg) {
        this.rg = rg;
    }

    public boolean isShadow() {
        return shadow;
    }

    public void setShadow(boolean shadow) {
        this.shadow = shadow;
    }

    public Endereco getEndereco() {
        return endereco;
    }

    public void setEndereco(Endereco endereco) {
        this.endereco = endereco;
    }

    public List<Telefone> getTelefonesList() {
        return telefonesList;
    }

    public void setTelefonesList(List<Telefone> telefonesList) {
        this.telefonesList = telefonesList;
    }

    @Override
    public String toString() {
        return id + " - " + nome;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Associado other = (Associado) obj;
        if (this.id != other.id) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 67 * hash + (int) (this.id ^ (this.id >>> 32));
        return hash;
    }
}
